package dto

import "gozrd-admin-api/internal/entity/model"

// AddSysAdminDto 新增参数
type AddSysAdminDto struct {
	PostId   int    `json:"post_id" validate:"required" example:"1"`                     // 岗位id
	RoleId   int    `json:"role_id" validate:"required" example:"1"`                     // 角色id
	DeptId   int    `json:"dept_id" validate:"required" example:"1"`                     // 部门id
	Username string `json:"username" validate:"required,min=3,max=20" example:"admin"`   // 用户名
	Password string `json:"password" validate:"required,min=6" example:"123456"`         // 密码
	Nickname string `json:"nickname" validate:"required" example:"管理员"`                  // 昵称
	Phone    string `json:"phone" validate:"required,len=11" example:"13800138000"`      // 手机号
	Email    string `json:"email" validate:"required,email" example:"admin@example.com"` // 邮箱
	Note     string `json:"note" example:"备注信息"`                                         // 备注
	Status   int    `json:"status" validate:"required,oneof=1 2" example:"1"`            // 状态：1->启用,2->禁用
}

// UpdateSysAdminDto 修改参数
type UpdateSysAdminDto struct {
	Id       int    `json:"id" validate:"required" example:"1"`                          // ID
	PostId   int    `json:"postId" validate:"required" example:"1"`                      // 岗位id
	DeptId   int    `json:"deptId" validate:"required" example:"1"`                      // 部门id
	RoleId   int    `json:"roleId" validate:"required" example:"1"`                      // 角色id
	Username string `json:"username" validate:"required" example:"zhangsan"`             // 用户名
	Nickname string `json:"nickname" validate:"required" example:"管理员"`                  // 昵称
	Phone    string `json:"phone" validate:"required,len=11" example:"13800138000"`      // 手机号
	Email    string `json:"email" validate:"required,email" example:"admin@example.com"` // 邮箱
	Note     string `json:"note" example:"备注信息"`                                         // 备注
	Status   int    `json:"status" validate:"required,oneof=1 2" example:"1"`            // 状态：1->启用,2->禁用
}

// SysAdminIdDto Id参数
type SysAdminIdDto struct {
	Id int `json:"id" validate:"required" minimum:"1"  example:"1"` // ID
}

// UpdateSysAdminStatusDto 设置状态参数
type UpdateSysAdminStatusDto struct {
	Id     int `json:"id" validate:"required" example:"1"`
	Status int `json:"status" validate:"required,oneof=1 2" example:"1"` // 状态：1->启用,2->禁用
}

// ResetSysAdminPasswordDto 重置密码参数
type ResetSysAdminPasswordDto struct {
	Id       int    `json:"id" validate:"required" example:"1"`                  // ID
	Password string `json:"password" validate:"required,min=6" example:"123456"` // 密码
}

// UpdatePersonalDto 修改个人信息参数
type UpdatePersonalDto struct {
	Id       int    `json:"id" validate:"required" example:"1"`                                // ID
	Icon     string `json:"icon"  validate:"required" example:"http://127.0.0.1:8080/1.jpg"  ` // 头像
	Username string `json:"username" validate:"required" example:"zhangsan"`                   // 用户名
	Nickname string `json:"nickname" validate:"required" example:"管理员"`                        // 昵称
	Phone    string `json:"phone" validate:"required,len=11" example:"13800138000"`            // 手机号
	Email    string `json:"email" validate:"required,email" example:"admin@example.com"`       // 邮箱
	Note     string `json:"note" example:"备注信息"`                                               // 备注
}

// UpdatePersonalPasswordDto 修改个人密码
type UpdatePersonalPasswordDto struct {
	Id            int    `json:"id" validate:"required" example:"1"`                         // ID
	Password      string `json:"password" validate:"required,min=6" example:"123456"`        // 密码
	NewPassword   string `json:"new_password"   validate:"required,min=6" example:"1234567"` // 新密码
	ResetPassword string `json:"reset_password" validate:"required,min=6" example:"1234567"` // 重复密码
}

// SysAdminListQueryDto 管理员列表查询参数
type SysAdminListQueryDto struct {
	PageNum   int    `form:"pageNum" binding:"required,min=1" json:"pageNum"`           // 页码
	PageSize  int    `form:"pageSize" binding:"required,min=1,max=100" json:"pageSize"` // 每页数量
	Username  string `form:"username" json:"username"`                                  // 用户名
	Status    string `form:"status" json:"status"`                                      // 状态
	BeginTime string `form:"beginTime" json:"beginTime"`                                // 开始时间
	EndTime   string `form:"endTime" json:"endTime"`                                    // 结束时间
}

// SysAdminQuery 管理员查询参数
type SysAdminQuery struct {
	PageNum   int    // 页码
	PageSize  int    // 每页数量
	Username  string // 用户名
	Status    string // 状态
	BeginTime string // 开始时间
	EndTime   string // 结束时间
}

// AdminListResult 管理员列表结果
type AdminListResult struct {
	Admins      []model.SysAdmin // 管理员列表
	Total       int64            // 总记录数
	RoleMapping map[int]int      // 管理员ID -> 角色ID的映射
	DeptNames   map[int]string   // 部门ID -> 部门名称的映射
	PostNames   map[int]string   // 岗位ID -> 岗位名称的映射
	RoleNames   map[int]string   // 角色ID -> 角色名称的映射
}
